#!/bin/bash
# 视频播放器安装脚本 (支持中文/文件关联)
set -e

# ===== 配置区 =====
APP_NAME="video"
DISPLAY_NAME="Video"
DISPLAY_NAME_ZH="视频"
SRC_FILE="video_linux.c"
ICON_SRC="video.png"
# ==================

# 检查是否以root运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用sudo运行此脚本或切换到root用户"
    exit 1
fi

# 检查源文件是否存在
if [ ! -f "$SRC_FILE" ]; then
    echo "错误: 找不到源文件 $SRC_FILE"
    exit 1
fi

if [ ! -f "$ICON_SRC" ]; then
    echo "警告: 找不到图标文件 $ICON_SRC，将使用默认图标"
    # 创建一个简单的默认图标
    if ! convert -size 512x512 xc:blue -fill white -draw 'circle 256,256 256,100' "$ICON_SRC"; then
        echo "错误: 默认图标生成失败"
        exit 1
    fi
fi

# 系统路径
INSTALL_DIR="/usr/local/bin"
ICON_NAME="$APP_NAME"
DESKTOP_FILE="/usr/share/applications/$APP_NAME.desktop"
MIME_TYPES="video/mp4;video/avi;video/x-matroska;video/quicktime;application/vnd.rn-realmedia"

# 安装编译依赖
echo "[1/7] 安装编译依赖..."
apt-get update
apt-get install -y --no-install-recommends \
    build-essential \
    libsdl2-dev \
    libavformat-dev \
    libavcodec-dev \
    libswscale-dev \
    libavutil-dev \
    libswresample-dev \
    libsdl2-ttf-dev \
    imagemagick

# 编译程序
echo "[2/7] 编译程序..."
gcc "$SRC_FILE" -o "$APP_NAME" \
    $(pkg-config --cflags --libs libavformat libavcodec libswscale libavutil libswresample) \
    -lSDL2 -lSDL2_ttf -lm
chmod +x "$APP_NAME"

# 图标处理（增强错误检查）
echo "[3/7] 生成多尺寸图标..."
ICON_SIZES=(16 22 24 32 48 64 128 256 512)
for size in "${ICON_SIZES[@]}"; do
    mkdir -p "/usr/share/icons/hicolor/${size}x${size}/apps"
    if ! convert "$ICON_SRC" -resize "${size}x${size}" \
        "/usr/share/icons/hicolor/${size}x${size}/apps/$ICON_NAME.png"; then
        echo "错误: 生成 ${size}x${size} 图标失败"
        exit 1
    fi
done

# 安装主程序
echo "[4/7] 安装可执行文件..."
cp -v "$APP_NAME" "$INSTALL_DIR/"
chmod 755 "$INSTALL_DIR/$APP_NAME"

# 创建桌面文件
echo "[5/7] 创建桌面菜单项..."
cat > "$DESKTOP_FILE" <<EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=$DISPLAY_NAME
Name[zh_CN]=$DISPLAY_NAME_ZH
GenericName=Video Player
GenericName[zh_CN]=视频
Comment=A SDL/FFmpeg based video player
Comment[zh_CN]=基于SDL2和FFmpeg开发的视频播放器
Exec=$INSTALL_DIR/$APP_NAME %f
Icon=$ICON_NAME
Terminal=false
Categories=AudioVideo;Player;Video;
MimeType=$MIME_TYPES
Keywords=video;player;media;
Keywords[zh_CN]=视频;播放器;媒体;
EOF

# 更新系统数据库（强制更新图标缓存）
echo "[6/7] 刷新系统配置..."
update-desktop-database
gtk-update-icon-cache --force /usr/share/icons/hicolor
update-mime-database /usr/share/mime

# 设置文件关联
echo "[7/7] 设置文件关联..."
for mime in $(echo $MIME_TYPES | tr ';' ' '); do
    if [ -n "$mime" ]; then
        xdg-mime default "$APP_NAME.desktop" "$mime"
    fi
done

echo -e "\n\e[32m安装完成！\e[0m"
echo "现在可以通过以下方式使用:"
echo "1. 命令行: $INSTALL_DIR/$APP_NAME [视频文件]"
echo "2. 桌面菜单: 在应用程序菜单中找到 '$DISPLAY_NAME_ZH'"
echo "3. 右键视频文件选择『打开方式』→『$DISPLAY_NAME_ZH'"
